home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
msdos
/
editors
/
chiaro
/
gifcheck.doc
< prev
next >
Wrap
Text File
|
1993-03-12
|
48KB
|
1,103 lines
GIFCHECK 1.11 DOCUMENTATION
===========================
James W. Birdsall
03/19/93
0. CONTENTS
-----------
0. CONTENTS
1. INTRODUCTION
1.1 Quick Reference
1.2 Copyright, License, and Warranty Disclaimer
2. USAGE
2.1 Targets
2.1.1 Wildcards
2.2 Options
2.2.1 Output redirection options
2.2.2 Output format options
2.2.3 Processing options
2.2.4 Diagnostic options
2.2.5 -# Version
2.2.6 -? Help
3. OUTPUT
3.1 File Header
3.2 Image
3.3 Extension Blocks
3.3.1 Generic extensions
3.3.2 Graphic Control Extension
3.3.3 Plain Text Extension
3.3.4 Comment Extension
3.3.5 Application Extension
3.4 Terminator
4. DIAGNOSTIC MESSAGES
4.1 Anomalies
4.2 Violations
4.3 Fascinatings
4.4 Nitpicks
4.5 Miscellaneous
5. THE END
1. INTRODUCTION
---------------
GIFCHECK is a program of the Chiaro suite. It performs a complete
analysis and verification of GIF-format images and displays the
information it finds. It can also be used in batch files to determine
whether GIF files need to be passed through the GIFSTRIP program to
remove excess characters.
1.1 Quick Reference
-------------------
This is a quick summary of the usage and options of GIFCHECK.
Invoking GIFCHECK with the option "-?" will produce a similar summary.
Complete explanations may be found in section 2.
usage: gifcheck [options] target [target ...]
target filename, filename with wildcards, or path. Wildcards
are *, ?, and ranges or groups specified in []. A
range or group may be complemented with ^ or !.
-b BATCH: suppresses all console output. Should be first
on the line. Returns ERRORLEVEL 0 if OK, 1 if a
non-GIF file was found, 2 if unexpected EOF in a GIF
file, 3 on other error, 4 if the GIF is OK but needs
to be stripped, and 5 if the. GIF is OK but needs to
be stripped with the -m option.
-r Sends error messages to stderr instead of stdout.
-p Turn off paging of output (paging always off when
stdout is redirected or -b BATCH is in effect).
-v VERBOSE: turns on verbose output.
-h HEX DUMP: switches from ASCII to HEX dump for certain
blocks.
-c COLOR DUMP: dumps raw RGB values from all colormaps.
-l Disables checking for leading junk characters (from a
Mac, for example).
-f FAST: disables decompression. Only block formatting
is checked.
-dn SET DISPLAY WARNING LEVEL:
0 displays anomalies and violations
1 (default) displays anomalies, violations, and
fascinatings
2 displays anomalies, violations, fascinatings,
and nitpicks
-en SET EXIT WARNING LEVEL:
0 exits on anomalies only
1 (default) exits on anomalies and violations
2 exits on anomalies, violations, and fascinatings
-# VERSION: Prints version information on internal
modules, then exits.
GIFCHECK automatically reads a list of targets from stdin if stdin is
redirected. Targets must be separated by newlines, and are
wildcard-expanded in the same way as command-line targets. Note that
command-line targets are ignored if stdin is redirected; if stdin is not
redirected, there must be at least one target on the command line.
Options are case-insensitive, and may not be combined.
1.2 Copyright, License, and Warranty Disclaimer
-----------------------------------------------
The Graphics Interchange Format(c) is the Copyright property of
CompuServe Incorporated. GIF(sm) is a Service Mark property of
CompuServe Incorporated.
GIFCHECK is not in the public domain. All the files are copyright
1993 by James W. Birdsall, all rights reserved.
The following license applies to the entire Chiaro suite, which is
made up of all the files listed in the file MANIFEST. Permission is
granted to do the following:
You may freely redistribute this archive, so long as it contains
all the files listed in the file MANIFEST, intact and
unmodified.
You may use the programs contained in this archive for a period
of 30 days for evaluation purposes.
Payment of the $10 shareware fee (which covers all the programs in
the Chiaro suite) licenses you to use the Chiaro suite beyond the
evaluation period. This license-to-use specifically includes use by
bulletin board systems and other commercial or private information
services.
Registered users will also receive update notices and bug reports,
and are entitled to use future versions without further payment.
The contents of the distribution archive, and all other related
files, information, and services are provided "as is" and without
warranty. To the extent permitted by applicable law, the author
disclaims all warranties, express or implied, including but not limited
to, any implied warranty of merchantability or fitness for a particular
purpose. While effort has been made to ensure that the files,
information, and services are accurate and correct, the author shall not
be liable for damages arising out of the use of or inability to use this
product, including but not limited to, loss of profit, data, or use of
this software, or special, incidental, or consequential damages or other
similar claims, even if the author has been specifically advised of the
possibility of such damages. Some states do not allow the exclusion of
incidental or consequential damages, so the foregoing limitation may not
apply to you.
Information on contacting the author is provided at the end of this
file.
2. USAGE
--------
GIFCHECK may be called with zero or more options interspersed with
zero or more targets. All options are scanned before any file searching
is done, so order of options and targets is unimportant. If the standard
input is not redirected, at least one target must be specified on the
command line. If the standard input is redirected (is not the keyboard),
GIFCHECK will detect this and will attempt to read a list of targets,
separated with newlines, from the standard input. Targets on the command
line will be ignored, but options on the command line will be used. This
feature is for use with the "front end" option of CHILS.
GIFCHECK requires 150,000 bytes of free conventional memory to run.
2.1 Targets
-----------
A target can consist of a filename (optionally with path), a path, or
a filename with wildcards (again, optionally with path). In the case of
a filename, that file is checked. In the case of a path, all files in
the specified directory are checked. In the case of a filename with
wildcards, all files in the appropriate directory (the current directory
if no path is given) matching the wildcards are checked.
If a file that is checked is a GIF format file, it is processed. If
it is not, it is not processed.
2.1.1 Wildcards
---------------
Wildcards are much closer to the UNIX standard than MS-DOS. The
characters * and ? retain their ordinary meanings but matching is much
more intelligent. For example, *A.GIF will match LENNA.GIF but not
CHESS.GIF, whereas under ordinary MS-DOS wildcards, *A.GIF would match
both. Further, groups and ranges of characters may be specified in
brackets []. For example, PIC0[1-5].GIF will match any filename starting
with "PIC0", then containing any one of the characters "1", "2", "3",
"4", or "5", and ending with ".GIF". PIC0[1-5A-F].GIF will match the
names described before or those with the characters "A", "B", "C", "D",
"E", or "F" between "PIC0" and ".GIF".
A range or group may be complemented with the characters "^" or "!".
For example, PIC0[^1-5].GIF will match any name with one character
between "PIC0" and ".GIF" unless that character is "1", "2", "3", "4",
or "5".
Note that wildcards are only allowed in the filename portion, not the
path portion. "\PICTURES\NEWGIF*\*.GIF" is illegal and an error message
will be issued.
2.2 Options
-----------
GIFCHECK has a variety of options to modify its function, including
options to control the formatting of output, the level of processing
done, etc. These options are described below. Options are
case-insensitive ("-c" is the same as "-C") and may not be combined
("-cv" will not have the desired effect, since only the "-c" will be
recognized; "-c -v" should be used instead).
2.2.1 Output redirection options
--------------------------------
The following options specify where various types of output should be
sent.
2.2.1.1 -b Batch
----------------
The -b option causes GIFCHECK to operate in batch mode. All console
output is suppressed. This option should be first on the command line or
other options may generate console output before this option is found.
When in batch mode, GIFCHECK adjusts the ERRORLEVEL return to reflect
the results of processing. ERRORLEVEL is set to:
0 if the file was a valid GIF format file and did not need
stripping
1 if the file was not a GIF format file
2 if GIFCHECK encountered an unexpected end-of-file
3 if there was any other error
4 if the file is a valid GIF format file but needs to be
stripped (excess characters on end of file)
5 if the file is a valid GIF format file but needs to be
stripped with the -m option (excess characters at the
beginning of the file and possibly the end as well)
NOTE: the ERRORLEVEL reflects only the results of the last file
processed. Therefore, in batch mode only one file should be specified on
the command line.
NOTE: this option automatically invokes the -p no-paging option.
2.2.1.2 -r Error Redirect
-------------------------
Normally error messages are sent to the standard output stream, along
with all other output from GIFCHECK. However, error messages can be
redirected to the standard error output stream with the -r option. This
means that error messages will appear on the screen even if output is
redirected to a file with the DOS ">" or "|" output redirection
operators. Note that the error messages will not appear in the file,
however.
2.2.1.3 -p Disable paging
-------------------------
Normally, output is paged (after a screenful of output has been
printed, GIFCHECK pauses with the message "---more---" and waits for a
keystroke before continuing). Also, an ASCII clockface is displayed when
decompressing an image to indicate that GIFCHECK is still working. The
-p option turns off both of these features. Note that the -p option is
automatically invoked if the standard output is redirected, or if the -b
option is in effect.
2.2.2 Output format options
---------------------------
2.2.2.1 -v Verbose
------------------
This option causes output to be in a more verbose format. No
additional data is displayed.
2.2.2.2 -h Hex dump
-------------------
This option causes output to be in a hex dump format instead of plain
text format for Plain Text Extensions and Comment Extensions, extension
blocks defined by the GIF89a standard.
2.2.2.3 -c Color dump
---------------------
This option causes GIFCHECK to dump all colormaps found in an image,
local and global, as decimal RGB triplets of the format RRR/GGG/BBB.
2.2.3 Processing options
------------------------
The following options determine what processing is performed on a
file.
2.2.3.1 -l No leading junk check
--------------------------------
The -l option disables checking for excess characters at the
beginning of the file. This means that if a file does not begin with the
GIF signature, the file is assumed not to be a GIF file. Excess
characters are typically found at the beginnings of files which have
been transferred incorrectly from a Macintosh computer.
2.2.3.2 -f Fast
---------------
This option disables image decompression, in which the compressed
image data is checked to ensure that the data has not been corrupted.
This can be a slow process, especially for large files. However, an
image cannot be completely verified if it is not decompressed, and some
information can only be obtained by decompressing the image data.
2.2.4 Diagnostic options
------------------------
GIFCHECK produces a wide variety of diagnostics. They are described
in more detail in section 4, but they all belong in one of four
categories:
ANOMALY a format error so major that GIFCHECK cannot
decide how to continue processing the file
VIOLATION a major violation of the GIF specification,
which will probably cause most viewers to fail
or display incorrectly
FASCINATING (from Mr. Spock) a violation of the GIF
specification, but most viewers should cope
with the image OK
NITPICK technically, a violation of the GIF
specification, but so minor as to be
meaningless -- a large fraction of all images
contain NITPICK-type violations
The diagnostic options determine which levels of diagnostics are
displayed by GIFCHECK, and which levels cause GIFCHECK to skip
immediately to the next image (or exit, if on the last image). Note that
anomalies and violations are always displayed, anomalies always cause
GIFCHECK to skip to the next image, and NITPICKS never cause GIFCHECK to
skip.
2.2.3.1 -d Set display warning level
------------------------------------
The -d option takes an argument 0, 1, or 2, which must be immediately
next to the "-d" (no space).
-d0 display anomalies and violations
-d1 (default) display anomalies, violations, and fascinatings
-d2 display all
2.2.3.2 -e Set exit warning level
---------------------------------
The -e option takes an argument 0, 1, or 2, which must be immediately
next to the "-e" (no space).
-e0 skip on anomalies only
-e1 (default) skip on anomalies and violations
-e2 skip on anomalies, violations, and fascinatings
2.2.4 -# Version
----------------
This option is intended more for bug reporting purposes than anything
else. It causes GIFCHECK to print the version numbers and compilation
dates of its component modules. No files are processed, and all other
options are ignored.
2.2.5 -? Help
-------------
This option, or any syntax error on the command line, causes a usage
message to be displayed. No files are processed, and all other options
are ignored.
3. OUTPUT
---------
GIFCHECK recognizes eight different types of blocks within a GIF
file: file headers, images, file terminators, and five types of
extension block: generic extensions, Graphic Control Extensions, Plain
Text Extensions, Comment Extensions, and Application Extensions (the
last four are found only in GIF89a-format files).
Data from each type of block is output in a different format, which
may change according to the settings of the output format options. The
various displays are explained below. Examples are surrounded by lines
of equals signs for easier reading; the lines are not part of the
display.
3.1 File Header
---------------
The default file header display, with no options, looks like this:
=====
Processing \JUNK2\DEVIL.GIF...
FILE \JUNK2\DEVIL.GIF GIF87a 11209 bytes
logical screen: 640 x 480
8 bits per color available on source
GLOBAL COLOR TABLE:
6 bits (64 colors) bg index 0 (000/000/000)
59 unique colors.
=====
The first line gives the filename, in case an error is encountered
immediately. The second line repeats the filename and displays the
format and filesize. The third line gives the size, in pixels, of the
logical screen on which all images in the file will be displayed. The
fourth line displays how many bits per color (R,G,B) were available on
the machine on which the file was created. This value is frequently set
incorrectly and may generally be ignored.
The global color table, if present, has a subsection to itself. The
sixth line indicates how large the global color table is. It also
displays the background color index and the RGB value corresponding to
that index. While the background color index is actually part of the
file header proper, it is meaninless unless a global color table is
present, so it is displayed in the global color table section. If the
file is a GIF89a-format image, this line also indicates whether the
global color table is sorted. Finally, the seventh line indicates how
many unique colors are present in the global color table.
If no global color table is present, a line stating this is displayed
instead.
If the -v VERBOSE option is in effect, the file header display looks
like this:
=====
Processing \JUNK2\DEVIL.GIF...
FILE \JUNK2\DEVIL.GIF is GIF version GIF87a:
file size (bytes): 11209
logical screen size (pixels, width x height): 640 x 480
8 bits per color available on source
This file has a global color table.
GLOBAL COLOR TABLE:
6 bits per index for a table size of 64
background index 0, RGB value 000/000/000
59 unique colors.
=====
The data displayed is the same, but more explanatory text is
included.
If the -c color dump option is in effect, the file header display
looks like this:
=====
Processing \JUNK2\DEVIL.GIF...
FILE \JUNK2\DEVIL.GIF GIF87a 11209 bytes
logical screen: 640 x 480
8 bits per color available on source
GLOBAL COLOR TABLE:
6 bits (64 colors) bg index 0 (000/000/000)
59 unique colors.
000/000/000 255/197/197 255/156/156 255/189/189 255/131/131
255/180/180 255/148/148 255/205/205 041/000/000 255/123/123
255/172/172 255/074/074 082/000/000 255/057/057 255/090/090
255/115/115 008/000/000 049/000/000 255/164/164 024/000/000
131/000/000 255/049/049 074/000/000 255/082/082 123/000/000
255/139/139 065/000/000 148/000/000 255/041/041 016/000/000
255/016/016 230/024/024 255/032/032 115/000/000 164/000/000
057/000/000 255/106/106 106/000/000 156/000/000 255/008/008
032/000/000 255/065/065 139/000/000 180/000/000 255/024/024
098/000/000 090/000/000 238/000/000 189/000/000 230/000/000
213/000/000 172/000/000 205/000/000 197/000/000 246/000/000
222/000/000 230/016/016 255/000/000 255/098/098 000/000/000
000/000/000 000/000/000 000/000/000 000/000/000
=====
The standard or verbose display is followed by a listing, in decimal,
of the raw RGB values found in the global color map.
3.2 Image
---------
The default image display, with no options, looks like this:
=====
IMAGE 1:
size 640 x 480 corner 0, 0 sequentially
This image uses the global color table (no local color table).
IMAGE DATA FOR IMAGE 1:
code size 6 bits
Reached end of codes in block 42
totals: 7906 codes packed into 10948 bytes in 43 blocks
307200 pixels extracted
code table cleared 2 times
compressed data is 4% of the size of uncompressed image
59 colors referenced (59 unique)
=====
Each image in the file is numbered sequentially (by GIFCHECK) and has
a section to itself. The first line gives the image number. The second
line indicates the size (in pixels) of the image, the location (in
pixels) of the upper left corner, and how the image is stored
("sequentially" or "interlaced").
The third line indicates whether there is a local color table, and
whether the image uses the global or local color table. If there is a
local color table, the third line is followed by a color table display
similar to the one for global color tables, possibly including a dump of
the raw RGB values if the -c color dump option is in effect. Very few
images have local color tables.
Image data is stored compressed, and the compressed data is further
broken up into blocks (which are numbered by GIFCHECK starting at 0).
The fifth line indicates the minimum code size for the image. The sixth
line indicates the block in which the end-of-information (EOI) code was
encountered. The seventh line indicates the number of codes extracted,
the number of bytes which those codes occupied, and how many blocks
those bytes were divided into. The eighth line indicates how many pixels
were generated when the codes were decompressed, and the ninth line
indicates how many times the table-clear code was encountered.
The tenth line indicates the size of the compressed data as a
percentage of the size of the uncompressed image. The size of the
compressed data is the size of the data only, not including block
headers, image headers, or any other non-image data, so the compression
ratio is accurate. The size of the uncompressed image is calculated by
multiplying the height and the width to get the total number of pixels
in the image, then multiplying by the number of bits required to
represent the global or local color table, depending on which one is
used by the image. Finally, the eleventh line indicates how many colors
were referenced by the image data, and how many of the colors referenced
are unique.
If the -v VERBOSE option is in effect, the image display looks like
this:
=====
IMAGE 1:
image size (pixels, width x height): 640 x 480
image upper left corner (column, row): 0, 0
image is stored sequentially
This image uses the global color table (no local color table).
IMAGE DATA FOR IMAGE 1:
code size 6 bits
Reached end of codes in block 42
totals: 7906 codes packed into 10948 bytes in 43 blocks
307200 pixels extracted
code table cleared 2 times
compressed data is 4% of the size of uncompressed image
59 colors referenced (59 unique)
=====
The data displayed is the same, but more explanatory text is
included.
If the -f FAST option is in effect, the image display looks like
this:
=====
IMAGE 1:
size 640 x 480 corner 0, 0 sequentially
This image uses the global color table (no local color table).
IMAGE DATA FOR IMAGE 1:
code size 6 bits
totals: 10948 bytes in 43 blocks
compressed data is 4% of the size of uncompressed image
=====
Since the compressed image data is not decompressed under this
option, less information is available.
3.3 Extension Blocks
--------------------
Extension blocks have been part of the GIF format since the original
GIF87a specification. Each extension block has a type identifier. In the
GIF87a specification, all extension types were application-defined;
there were no global standards. However, the GIF89a specification
dedicated four type identifiers for specific functions, and defined the
data formats used within those extension blocks. GIFCHECK recognizes
these dedicated types and formats the data appropriately.
3.3.1 Generic extensions
------------------------
If the format is GIF87a, or the format is GIF89a but the type
identifier is not one of the four dedicated types, the "generic
extension" format is used. It looks like this:
=====
GENERIC EXTENSION BLOCK 1:
extension block type 255
BLOCK 0 (11 bytes):
G 47 I 49 F 46 L 4C I 49 T 54 E 45 20
20 20 20
BLOCK 1 (6 bytes):
01 ) 29 p 70 0E 02 00
totals: 17 bytes of data in 2 blocks
=====
Generic extension blocks are numbered sequentially (by GIFCHECK). The
first line indicates that it is a generic extension block and gives the
sequence number. The second line shows the type identifier value. The
next lines display the data in hex dump format (generic extensions are
always displayed in hex dump format, regardless of the setting of the -h
option). Each data block is numbered sequentially (by GIFCHECK),
starting at 0. A line giving the data block number and the number of
bytes in the block is shown. Then the data bytes themselves are
displayed, eight per line. If the byte is a printable character, the
character is printed, followed by the hex value of the byte; otherwise a
space is printed, followed by the hex value. Finally, a totals line is
printed, indicating the total number of data bytes and the total number
of data blocks.
The -v VERBOSE option has no effect on generic extension displays.
3.3.2 Graphic Control Extension
-------------------------------
Graphic Control Extensions (GCEs) are one of the GIF89a dedicated
extension types. When encountered, they are displayed like this:
=====
GRAPHIC CONTROL EXTENSION BLOCK 1:
Disposal method: 0 (none)
User input is not expected
Transparency enabled (index 3)
No delay time specified
=====
GCEs are numbered sequentially (by GIFCHECK). The first line
indicates that it is a GCE and gives the sequence number. The second
line shows the disposal method (which applies to the next graphic --
i.e. image or Plain Text Extension -- in the file). This can be: "none",
"leave in place", "restore to background", or "restore to previous".
The third line indicates whether user input is expected before the
next graphic will be displayed. The fourth line indicates whether a
transparency color index (which indicates that pixels of the given color
should be rendered "transparent" -- i.e., not drawn) has been specified,
and if so, what the transparency index is. The last line indicates
whether a delay time (delay before the next graphic is displayed) has
been specified, and if so what the delay value is.
The -v VERBOSE option has no effect on GCE displays.
3.3.3 Plain Text Extension
--------------------------
Plain Text Extensions (PTEs) are one of the GIF89a dedicated
extension types. When encountered, they are displayed like this:
=====
PLAIN TEXT EXTENSION BLOCK 1:
char cell 8 x 28, grid 96( 12) x 28( 1) at 0, 112
Foreground color index 0 (RGB 016/016/014)
Background color index 3 (RGB 113/110/232)
START TEXT (12 characters):
Cass Berry
END TEXT.
=====
PTEs are numbered sequentially (by GIFCHECK). The first line
indicates that it is a PTE and gives the sequence number. The second
line shows: the size of the character cell, in pixels; the size of the
character grid, in pixels and cells (cells in parentheses); and the
location of the upper left corner of the grid. The third line shows the
index and RGB values of the foreground text color, and the fourth line
shows the same for the background color.
The fifth line indicates the start of the text, and how many
characters of text are present. It is followed by the text itself, which
is in turn followed by an "END TEXT." marker on the next line.
If the -v VERBOSE option is in effect, PTEs are displayed like this:
=====
PLAIN TEXT EXTENSION BLOCK 1:
Character cell grid upper left corner (column, row): 0, 112
Character cell size (pixels, width x height): 8 x 28
Character grid size (pixels, width x height): 96 x 28
Character grid size (chars, width x height): 12 x 1
Foreground color index 0 (RGB 016/016/014)
Background color index 3 (RGB 113/110/232)
START TEXT (12 characters):
Cass Berry
END TEXT.
=====
The same information is displayed, but more explanatory text is
included.
If the -h hex dump option is in effect, the text is displayed in hex
dump format, like this:
=====
PLAIN TEXT EXTENSION BLOCK 1:
char cell 8 x 28, grid 96( 12) x 28( 1) at 0, 112
Foreground color index 0 (RGB 016/016/014)
Background color index 3 (RGB 113/110/232)
START TEXT (12 characters):
LINE 1:
20 C 43 a 61 s 73 s 73 20 B 42 e 65
r 72 r 72 y 79 20
END TEXT.
=====
Instead of simply displaying the text, each character is displayed
individually, followed by its hex value.
3.3.4 Comment Extension
-----------------------
Comment Extensions are one of the GIF89a dedicated extension types.
When encountered, they are displayed like this:
=====
COMMENT EXTENSION BLOCK 1:
START TEXT (161 characters):
+-------------------------------------------------+
| Multi-image GIF89a created with CompuMake Tools |
+-------------------------------------------------+
END TEXT.
0 unprintable characters.
=====
Comment Extensions are numbered sequentially (by GIFCHECK). The first
line indicates that it is a Comment Extension and gives the sequence
number. The second line indicates the start of the text and how many
characters of text are present. It is followed by the text itself, which
is in turn followed by an "END TEXT." marker on the next line. The last
line indicates how many unprintable characters were found in the text.
The -v VERBOSE option has no effect on Comment Extension displays.
If the -h hex dump option is in effect, the text is displayed in hex
dump format, like this:
=====
COMMENT EXTENSION BLOCK 1:
START TEXT (161 characters):
+ 2B - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D + 2B 0D 0A | 7C 20 M 4D
u 75 l 6C t 74 i 69 - 2D i 69 m 6D a 61
g 67 e 65 20 G 47 I 49 F 46 8 38 9 39
a 61 20 c 63 r 72 e 65 a 61 t 74 e 65
d 64 20 w 77 i 69 t 74 h 68 20 C 43
o 6F m 6D p 70 u 75 M 4D a 61 k 6B e 65
20 T 54 o 6F o 6F l 6C s 73 20 | 7C
0D 0A + 2B - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D - 2D - 2D - 2D - 2D
- 2D - 2D - 2D - 2D + 2B 0D 0A 0D
0A
END TEXT.
0 unprintable characters.
=====
Instead of simply displaying the text, each character is displayed
individually, followed by its hex value.
3.3.5 Application Extension
---------------------------
Application Extensions are one of the GIF89a dedicated extension
types. When encountered, they are displayed like this:
=====
APPLICATION EXTENSION BLOCK 1:
application identifier:
f 66 r 72 a 61 c 63 t 74 i 69 n 6E t 74
application authentication code:
0 30 0 30 1 31
246 bytes of application data.
F 46 r 72 a 61 c 63 t 74 a 61 l 6C 00
96 00 07 00 00 00 00 h 68
D8 FB 0C @ 40 00 00 00 20
0B FF 0C @ 40 00 00 00 00
00 E9 I 49 ? 3F 00 00 00 00
F0 = 3D 89 ? 3F 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 1B 00 80 02
E0 01 00 01 04 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 FF FF
01 00 01 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 E7 03 00 00
Z 5A 00 09 01 00 00 x 78 00
8C 00 ( 28 00 00 00 02 00
n 6E 00 00 00 00 00 01 00
FF FF 01 00 00 00 14 00
00 00 00 00 04 00 00 00
00 00 04 00 P 50 00 d 64 00
00 00 00 00 00 00 FF FF
00 00 00 h 68 D8 FB 0C @ 40
00 00 00 00 00 E9 I 49 ? 3F
g 67 00 04 00 06 01 00 00
00 00 00 00 00 00 D8 A7
00 00 00 06 02 03 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
01 00 00 00 00 00
=====
Application Extensions are numbered sequentially (by GIFCHECK). The
first line indicates that it is an Application Extension and gives the
sequence number. The second line introduces the eight-byte application
identifier and is followed on the third line by the application
identifier itself, in hex dump format. The fourth line introduces the
three-byte application authentication code and is followed on the fifth
line by the application authentication code itself, in hex dump format.
The sixth line indicates how many bytes of application data are present,
and is followed by the application data itself in hex dump format. All
data in Application Extensions is always displayed in hex dump format,
regardless of the setting of the -h option.
The -v VERBOSE option has no effect on Application Extension
displays.
3.4 Terminator
--------------
When the GIF terminator block is encountered, GIFCHECK prints this
line:
=====
GIF TERMINATOR
=====
4. DIAGNOSTIC MESSAGES
----------------------
GIFCHECK can produce a variety of diagnostic messages. Some indicate
problems within the GIF file. Others indicate malfunctions of GIFCHECK
or the computer. Messages beginning with "ANOMALY", "VIOLATION",
"FASCINATING", and "NITPICK" indicate problems within the GIF file.
Messages beginning "FATAL ERROR", "ERROR", or "WARNING" indicate
malfunctions. Messages beginning "STRIP" indicate that the file should
be processed by the GIFSTRIP program to remove excess characters.
4.1 Anomalies
-------------
Anomalies are radical violations of the GIF specification. Anomalies
may be caused by massive corruption of the file, to the extent that
GIFCHECK cannot determine how to proceed with processing of the file, or
by individual values that make no sense. In either case, an image with
anomalies will probably be rejected by most GIF viewers. Anomalies are
always displayed and always cause GIFCHECK to skip immediately to the
next file to be processed.
The various anomalies that GIFCHECK can detect are explained below.
ANOMALY: end of data reached before end of codes
GIFCHECK reached the end of the packed image data
without encountering an End-of-Information code, which
signals the end of the image.
ANOMALY: decompression error in block xxx at offset yyy
GIFCHECK found a bad code in the packed image data. This
indicates that the file has been corrupted, and most
likely the rest of the file is trash.
ANOMALY: foreground color index off end of global color table
The color index specified for the foreground in a GIF89a
Plain Text Extension is invalid (PTEs always use the
global color table).
ANOMALY: background color index off end of global color table
The color index specified for the background in a GIF89a
Plain Text Extension is invalid (PTEs always use the
global color table).
ANOMALY: an undefined disposal method (x) is given
The value in the disposal method field of a Graphic
Control Extension is undefined.
ANOMALY: a ... cannot follow a ...
Where "..." is a block type. The GIF89a specification
includes a grammar which indicates which types of blocks
can follow which other types of blocks (in the simpler
GIF87a specification, there was no need). This grammar
has been violated.
4.2 Violations
--------------
Violations are major violations of the GIF specification. Violations
may be caused by corruption of the file or by individual values that
make no sense. In either case, an image with violations may be rejected
by some viewers and displayed with difficulty by others. Violations are
always displayed, and by default cause GIFCHECK to skip immediately to
the next file to be processed.
The various violations that GIFCHECK can detect are explained below.
VIOLATION: image does not fit on logical screen
Either the size of the image given in the image header
is greater in one or both dimensions than the size of
the logical screen given in the file header, or the
position of the image given in the image header causes
parts of the image to extend beyond the boundaries of
the logical screen.
VIOLATION: bad transparency index (x)
If processing a Plain Text Extension, indicates that the
transparency index specified by a preceeding Graphic
Control Extension is off the end of the global color
table (PTEs always use the global color table). If
processing an image, indicates that the transparency
index is off the end of either the global or local color
table, depending on which one the image uses.
VIOLATION: character grid does not fit on logical screen
Either the size of the character grid given in the Plain
Text Extension is greater in one or both dimensions than
the size of the logical screen given in the file header,
or the position of the character grid causes parts of it
to extend beyond the boundaries of the logical screen.
VIOLATION: text is too long to fit into character grid
The text given in the Plain Text Extension contains more
characters than there are character cells in the
character grid.
VIOLATION: xxx garbage characters found between blocks
There should be no garbage characters between blocks.
While this can theoretically be solved by using the
GIFSTRIP program, it probably indicates that the file
has been corrupted.
4.3 Fascinatings
----------------
Fascinatings are not always violations of the GIF specification.
Fascinatings are unusual conditions which most viewers can cope with,
but are still worthy of note. Fascinatings are displayed by default, and
by default do NOT cause GIFCHECK to skip.
The various fascinatings that GIFCHECK can detect are explained
below.
FASCINATING: this file does not contain a global color table
The GIF specification allows for files without global
color tables; they are to be displayed using the global
color table from a previous file, or a default table
chosen by the viewer if no previous global color table
is available. Files without global color tables are
extremely rare. This message is displayed when an image
which uses the global color table is encountered in a
file which has none.
FASCINATING: xxx extra blocks on end of image
The packed image data continued for one or more blocks
after the block in which the End-of-Information (EOI)
code was found. While this condition is suspicious, the
data before the EOI decompressed correctly (otherwise an
ANOMALY would have occurred), so there's no concrete
evidence that the image is bad.
FASCINATING: too few pixels extracted (xxx lines found, yyy pixels
missing)
When the End-of-Information code was encountered, too
few pixels had been extracted to fill the image (e.g.
for a 320 by 200 image, which should have 64,000 pixels,
only 63,999 were extracted). Typically only one or two
are missing. Viewers seem to cope with this condition
OK.
FASCINATING: too many pixels extracted (xxx extra)
When the End-of-Information code was encountered, more
pixels than necessary had been extracted (e.g. for a
320 by 200 image, which should have 64,000 pixels,
64,001 were extracted). Typically only one or two extras
are present. Viewers seem to cope with this condition
OK.
FASCINATING: code table never cleared
While this is technically OK, it is recommended practice
to clear the decompression code table (via a clear code
in the compressed image data) immediately at the
beginning of the image. If the code table was never
cleared, the initial clear never occurred.
FASCINATING: this file has no Global Color Table (GCT is used by PTE)
The GIF specification allows for files without global
color tables; they are to be displayed using the global
color table from a previous file, or a default table
chosen by the viewer if no previous global color table
is available. Files without global color tables are
extremely rare. This message is displayed when a Plain
Text Extension (PTEs always use the global color table)
is encountered in a file which has no global color table.
FASCINATING: transparency index does not match either foreground
or background
This message is displayed when processing a Plain Text
Extension and the transparency index specified by a
preceeding Graphic Control Extension does not match
either the foreground or the background color indices of
the PTE. This renders the transparency index
meaningless, since it only applies to the next graphic
(image or PTE) following the GCE. Nothing is technically
wrong, but it's weird.
4.4 Nitpicks
------------
Nitpicks are minor technical violations of the GIF specification.
Some are very common, and they should not cause problems when viewing
the file. Nitpicks are by default NOT displayed, and never cause
GIFCHECK to skip.
The various nitpicks that GIFCHECK can detect are explained below.
Most of these messages are self-explanatory, so no detailed explanation
is given.
NITPICK: byte 6 of the logical screen descriptor should be 0 for GIF87A
NITPICK: bit 3, byte 4 of logical screen descriptor should be 0
for GIF87A
NITPICK: bits 3 and 4, byte 9 of image descriptor should be 0
NITPICK: bit 5, byte 9 of image descriptor should be 0 for GIF87A
NITPICK: bits 5-7, byte 1 of graphic control extension should be 0
NITPICK: local color table size is nonzero
The image does not have a local color table, but the
local color table size is nonzero.
NITPICK: character grid not an integral number of character cells wide
The horizontal size of the character grid in a Plain
Text Extension is not evenly divisible by the horizontal
size of a character cell.
NITPICK: character grid not an integral number of character cells high
The vertical size of the character grid in a Plain Text
Extension is not evenly divisible by the vertical size
of a character cell.
NITPICK: xxx unprintable characters in text
Plain Text Extensions are supposed to contain only
"7-bit printable ASCII characters".
4.5 Miscellaneous
-----------------
GIFCHECK can also produce messages beginning with "FATAL ERROR",
"ERROR", "WARNING", and "STRIP". The first three indicate malfunctions
of GIFCHECK or the computer, and typically cause GIFCHECK to exit
immediately. Messages beginning with "STRIP" indicate that the file
should be processed by the GIFSTRIP program to remove excess characters,
and are simply for the user's information. Processing of the file is not
affected.
5. THE END
----------
Technical support via email is available from the following addresses:
INTERNET (the following are alternate addresses for the same place):
support@picarefy.com
picarefy!support@amc.com
picarefy!support@netcom.com
uunet!uw-coco!amc-gw!picarefy!support
COMPUSERVE:
71261,1731
GENIE:
J.BIRDSALL2
Registrations should be sent to:
James W. Birdsall
11112 NE 124 LN #D204
Kirkland, WA 98034
If you have an email address on any of the networks listed above,
please include it when registering. It is much easier to send updates by
email. Also, please specify what sort of archive (ZIP, ZOO, ARC, LZH,
ARJ, UNIX shar) you can handle most easily.
NOTE: IF YOU DO NOT PROVIDE AN EMAIL ADDRESS, YOU WILL ONLY RECEIVE
MAJOR VERSION UPDATES. YOU WILL NOT RECEIVE MINOR VERSIONS. PLEASE
PROVIDE AN EMAIL ADDRESS IF YOU HAVE ANY WAY OF DOING SO.